const express = require('express');

const routes = express.Router();

//引入md5密码加密中间件
const md5 = require('md5-node');

//引入mysql
const mysql = require('mysql');
//创建连接池
var pool = mysql.createPool({
    connectionLimit : 10,
    host : 'localhost',
    user : 'root',
    password : 'root',
    database : 'stumsg'
})

//设置公共路由
routes.route('/')
    .get((req,resp)=> {
        resp.render('login')
    })
    .post((req,resp)=> {
    //   判断是教师还是学生

        if(req.body.gender == 1){
            //查询的是教师表
            var stds = 'tea_list';
        //    判断职务进入教师端首页
            var redUrl = '/home_teach';
        }else {
            //查询的是学生表
            var stds = 'stu_list';
            //    判断职务进入学生端首页
            var redUrl = '/home';
        }

    //    过滤提交的数据 ， 清楚空格
        var uid = req.body.uname.trim();
        //使用md5 对密码进行加密
        var pwd = md5(req.body.upwd.trim());
        //清楚空格正常
        // console.log(pwd.length)
    //    执行数据查看   `` : 解析字符串里面的变量
        var sql = `SELECT * FROM ${stds} WHERE uid = ${uid} and pwd = '${pwd}'`
        //语句正确
        //console.log(sql)
    //    链接数据库
       pool.getConnection(function(err,connection){
            if(err) throw err;
        //    链接成功
            connection.query(sql,(error,result)=>{

                //console.log(result)
            //    释放连接   关闭数据库
                connection.release();
                //执行成功  还是需要再次判断result是否为空  为空重定向登录页  不为空则进入查询页

                if(result==''){
                    //数据为空
                    resp.redirect('/')
                }else {
                    //存储数据   cookie
                    //工号
                    resp.cookie('uid',uid,{maxAge:86400000,httpOnly:true});
                    //职务
                    resp.cookie('gender',req.body.gender,{maxAge:86400000,httpOnly:true});
                    //把数据库的密码存储进cookie
                    resp.cookie('pwd',pwd,{maxAge:86400000,httpOnly:true});
                    //将教师的专业id存储进cookie里面  用于后期判断查询相对应专业学生的信息
                    resp.cookie('sub_id',result[0].sub_id,{maxAge:86400000,httpOnly:true});
                    //有数据了  那就查询进入首页  还有在登录页显示谁在这个时间段登录进了系统
                    //获取当前时间戳  Date.now()
                    var data = new Date().getTime();
                    //将当前登录人的信息加时间戳添加进去登录表
                    var sqll = `INSERT INTO sub_list (log_uid,logintmp,post) VALUES (${uid},${data},${req.body.gender})`
                    //  执行sqll
                   connection.query(sqll,(er,res)=>{
                   //    登录成功  进入查询页
                       resp.redirect(redUrl)
                   //    执行错误
                       if(er) throw er;
                   })
                   // console.log(sqll)
                }
                //sql语句出错执行报错处理
                if(error) throw error;
            })
        })
    })
//暴露接口
module.exports = routes;